from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from flask_script import Manager
from flask_migrate import MigrateCommand,Migrate
from _apply import bp_apply


# 自定义一个配置文件类
class MyConfig(object):
    DEBUG=True

# 创建app对象，管理整个应用
app = Flask(__name__)

# 链接数据库，使用的是pymysql驱动
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://root:password@localhost:3306/marriage'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
app.config['SECRET_KEY'] = 'JLSDJFLKSJDFSDSsdf'

# 给app对象上添加自定义的配置
app.config.from_object(MyConfig)

# 创建一个数据库对象
db = SQLAlchemy(app)

# 使用flask脚本控制app对象，使其可以用命令行启动服务
manager = Manager(app)
# 将应用对象app和数据库对象db关联
Migrate(app, db)
# 将MigrateCommand命令添加到manager对象中，目的为在命令行中执行迁移文件指令
manager.add_command('db', MigrateCommand)
# 将蓝图注册到应用对象app中

app.register_blueprint(bp_apply)


# 创建报名表结构
class Apply(db.Model):
    onstellation = db.Column(db.Text, nullable=False)
    sex = db.Column(db.Text, nullable=False)
    name = db.Column(db.Text,nullable=False)
    contact = db.Column(db.String(20), primary_key=True)

# 创建作者表结构，id为主键，关系映射到表book上
# class Author(db.Model):
#     id = db.Column(db.Integer, primary_key=True)
#     name = db.Column(db.String(20), unique=True)
#     book = db.relationship('Book', backref='author', lazy='dynamic')
# 程序启动入口
if __name__ == '__main__':
    db.create_all()
    manager.run()